package com.dw.etl.core.service;

import com.dw.etl.common.util.UUIDUtil;
import  com.dw.etl.common.vo.PaginationVO;
import com.dw.etl.core.bean.model.MdMedDmtb;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.dw.etl.core.api.MdMedTbFldService;
import com.dw.etl.core.mapper.MdMedTbFldMapper;
import com.dw.etl.core.bean.model.MdMedTbFld;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

/**
 * mdMedTbFld服务实现类
 * Created by hozeData on 2021/07/08.
 */
@Service
@Transactional
public class MdMedTbFldServiceImpl implements MdMedTbFldService{

    private static final Logger LOGGER = LoggerFactory.getLogger(MdMedTbFldServiceImpl.class);

    @Autowired
    private MdMedTbFldMapper mdMedTbFldMapper;

    @Override
    public int insert(MdMedTbFld mdMedTbFld) {
        if(StringUtils.isEmpty(mdMedTbFld.getIdTbFld())){
            String uuid32 = UUIDUtil.getUUID32();
            mdMedTbFld.setIdTbFld(uuid32);
        }
        return mdMedTbFldMapper.insert(mdMedTbFld);
    }

    @Override
    public int insertSelective(MdMedTbFld mdMedTbFld)  {
        if(StringUtils.isEmpty(mdMedTbFld.getIdTbFld())){
            String uuid32 = UUIDUtil.getUUID32();
            mdMedTbFld.setIdTbFld(uuid32);
        }
        return mdMedTbFldMapper.insertSelective(mdMedTbFld);
    }

    @Override
    public int deleteById(String idTbFld)  {
        return mdMedTbFldMapper.deleteByPrimaryKey(idTbFld);
    }

    @Override
    public int updateByIdSelective(MdMedTbFld mdMedTbFld)  {

        return mdMedTbFldMapper.updateByPrimaryKeySelective(mdMedTbFld);
    }

    @Override
    public int updateById(MdMedTbFld mdMedTbFld)  {
        return mdMedTbFldMapper.updateByPrimaryKey(mdMedTbFld);
    }

    @Override
    public MdMedTbFld getById(String idTbFld)  {
        return mdMedTbFldMapper.selectByPrimaryKey(idTbFld);
    }

    @Override
    public List<MdMedTbFld> findByModel(MdMedTbFld mdMedTbFld)  {
        return mdMedTbFldMapper.findByModel(mdMedTbFld);
    }

    @Override
    public PaginationVO<MdMedTbFld> findPageByModel(MdMedTbFld mdMedTbFld, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum == null? 1 : pageNum, pageSize == null? 10 : pageSize);
        List<MdMedTbFld> quesList = mdMedTbFldMapper.findByModel(mdMedTbFld);
        PageInfo<MdMedTbFld> pageInfo = new PageInfo<>(quesList);
        PaginationVO<MdMedTbFld> paginationVo = new PaginationVO(pageInfo.getTotal(), pageInfo.getList());
        return paginationVo;
    }

    @Override
    public int save(List<MdMedTbFld> list) {
        MdMedTbFld modelField = new MdMedTbFld();
        modelField.setIdTb(list.get(0).getIdTb());
        mdMedTbFldMapper.deleteByModel(modelField);
        for(MdMedTbFld etlBaseField:list) {
            this.insertSelective(etlBaseField);
        }
        return 0;
    }

    @Override
    public List<MdMedTbFld> findValidTbField(String idTb) {
        return mdMedTbFldMapper.findValidTbField(idTb);
    }

    @Override
    public List<MdMedTbFld> findTbDimField(String idTb) {
        return mdMedTbFldMapper.findTbDimField(idTb);
    }
}
